feat: refactor illustrations package#675
Merged
Merged
Conversation
Collaborator
✅ Heimdall Review Status
✅
|
| Code Owner | Status | Calculation | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ui-systems-eng-team |
✅
1/1
|
Denominator calculation
|
b0f36ff to
92e2b0f
Compare
cb-ekuersch
approved these changes
May 13, 2026
adrienzheng-cb
added a commit
that referenced
this pull request
May 15, 2026
* feat: refactor illustrations package (#675) * feat: refactor illustrations package * Update changelog * feat: support more props on TextInputBaseProps (#679) * feat: support more props on TextInputBaseProps * Fix tabs spreading order * Bump version * Add tests * Move readOnly prop location * Fix formatting * fix test * chore: set codeflow arch (#680) * feat: add illustration theming via applyTheme prop (#672) * feat: add illustration theming via applyTheme prop * update changelog * fix: add width/height="100%" to themed ESM SVG files (#683) * fix(illustrations): add width/height="100%" to themed ESM SVG files Ensures themed illustrations render at the correct size when inlined into the DOM. SVGs without explicit dimensions default to 300×150px in some browsers; setting 100% lets the wrapping container control sizing via its viewBox. * update changelog * fix: adjust tabs default tab label padding (#682) * fix: adjust tabs default tab label padding * Bump version * fix: unreliable version check (#684) * fix: unreliable version check. * update changelogs * chore: add helpful comments to deployable apps in our codeflow config file (#687) * fix(illustrations): prevent flickering when illustration palette changes on web (#685) * fix(illustrations): prevent flickering when illustration palette changes on web Remove illustrationColor from the useEffect dependency array in createIllustration. The SVG source file is the same regardless of the active palette — ThemeProvider handles palette changes via CSS variable updates, so there is no reason to re-fetch the SVG. Previously, any palette change (including spurious reference changes from ThemeProvider re-renders) would clear the SVG and trigger a reload, causing a visible flicker. Also only clear svgMarkup on load failure (not at effect start), so when the illustration name changes the previous SVG stays visible until the new one is ready rather than flashing to nothing. * update changelog * dedupe * update changelog --------- Co-authored-by: Hunter Copp <huntercolecopp@gmail.com> Co-authored-by: Erich <137924413+cb-ekuersch@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What changed? Why?
1. Migrate — Moves existing CJS wrapper files from the old flat layout to the new nested layout, updating the manifest paths:
svgJs/light/→svgJs/cjs/light/svgJs/dark/→svgJs/cjs/dark/svgJs/themeable/→svgJs/cjs/themeable/2. Backfill — For any illustration that has a raw
svg/themeable/*.svgon disk but is missing its JS wrappers, it reads the SVG content and writes the missing files:svgJs/cjs/themeable/<name>-<version>.js(module.exports = { content: \...` }`)svgJs/esm/themeable/<name>-<version>.js(export default \...``)After writing the wrappers (or if they already existed), it deletes the raw
.svgfile and removessvgThemedfrom the manifest — since the SVG content is now embedded in the JS wrappers and the raw file is no longer needed.3. Regenerate maps — For every illustration type that had any changes, it regenerates:
svgJsMap.ts— maps each illustration name to{ light, dark, themeable? }lazy CJS loaderssvgEsmMap.ts— maps each illustration name to{ themeable }lazy ESM dynamic imports (only for items that have a themeable variant)4. Remove — Removed files in
svg/themeable/Root cause (required for bugfixes)
UI changes
Testing
How has it been tested?
Testing instructions
Illustrations/Icons Checklist
Required if this PR changes files under
packages/illustrations/**orpackages/icons/**Change management
type=routine
risk=low
impact=sev5
automerge=false